package cn.lg.soar.system.account.service;

import cn.lg.soar.system.account.model.AccountLoginDTO;
import eu.bitwalker.useragentutils.DeviceType;

import java.util.Collection;

/**
 * @author luguoxiang
 * @date 2021/9/5
 */
public interface ILoginService {

    /**
     * 根据刷新token登录
     * @param refreshToken
     * @return
     */
    String refresh(String refreshToken);

    /**
     * 根据用户id登录
     * @param userId 用户id
     * @return
     */
    String login(long userId, boolean rememberMe);

    /**
     * 根据账号登录
     * @param username 用户账号
     * @return
     */
    String login(String username, boolean rememberMe);

    /**
     * 账号密码登录
     * @param dto 登录账号信息
     * @return
     */
    String login(AccountLoginDTO dto);

    /**
     * 退出登录
     */
    void logout();

    /**
     * 退出登录
     * @param userId
     * @param deviceTypes
     */
    void logout(Long userId, Collection<DeviceType> deviceTypes);

    /**
     * 退出登录
     * @param userId
     * @param deviceTypes
     */
    void logout(Long userId, DeviceType...deviceTypes);

    /**
     * 退出登录
     * @param username
     * @param deviceTypes
     */
    void logout(String username, Collection<DeviceType> deviceTypes);

    /**
     * 退出登录
     * @param username
     * @param deviceTypes
     */
    void logout(String username, DeviceType...deviceTypes);

}
